package com.xqboss.apps.mapper.user;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xqboss.apps.domain.user.UserIdentityRank;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

/**
 * 用户身份-段位(UserIdentityRank)表数据库访问层
 *
 * @author makejava
 * @since 2023-12-05 12:04:08
 */
@Repository
public interface UserIdentityRankMapper extends BaseMapper<UserIdentityRank> {

    /**
     * 根据身份id获取当前对应身份的最大等级 级别名称
     * @param identityId 身份id
     * @return 最大等级 级别名称 & 最高装备升级等级
     */
    @Select("SELECT concat(id,'&',identity_name,name,'&',max_equip_up_level,'级')  \n" +
            "FROM\n" +
            "\tuser_identity_rank \n" +
            "WHERE\n" +
            "\tLEVEL = ( SELECT max( u.LEVEL ) FROM user_identity_rank u WHERE u.identity_id = #{identityId} ) \n" +
            "\tAND identity_id = #{identityId}")
    String identityCardPromotionIdentity(@Param("identityId") long identityId);

    /**
     * 根据当前身份段位的 身份id 和 段位级别 获取 下一个级别的名称
     *
     * @param identityId 身份id
     * @param level 段位级别
     * @return  下一个级别的名称 & 最高装备升级等级
     */
    @Select("SELECT concat(id,'&',identity_name,name,'&',max_equip_up_level,'级') \n" +
            "FROM\n" +
            "\tuser_identity_rank \n" +
            "WHERE\n" +
            "\tLEVEL = ( SELECT min( u.LEVEL ) FROM user_identity_rank u WHERE u.identity_id = #{identityId} AND u.level > #{level}) \n" +
            "\tAND identity_id = #{identityId}")
    String getNextPromotionIdentity(@Param("identityId") Long identityId, @Param("level") Integer level);

    /**
     * 根据身份id获取当前对应身份的最大等级 级别名称
     * @param identityId 身份id
     * @return 最小等级 级别名称 & 最高装备升级等级
     */
    @Select("SELECT concat(id,'&',identity_name,name,'&',max_equip_up_level,'级') \n" +
            "FROM\n" +
            "\tuser_identity_rank \n" +
            "WHERE\n" +
            "\tLEVEL = ( SELECT min( u.LEVEL ) FROM user_identity_rank u WHERE u.identity_id = #{identityId} ) \n" +
            "\tAND identity_id = #{identityId}")
    String getFirstPromotionIdentity(long identityId);
}

